package classes;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.channels.FileChannel;
import javax.swing.JOptionPane;

/** Está classe funciona para gravar horario no txt
 * @version 1.0
 * @author grupo
 */
public class GravaHorario {
/** este metodo armazena todos os dados em uma string para ser gravados no txt
 *  separados por ";"
 *  
 * @param dia   variavel que armazena  o dia.
 * @param horario variavel que armazena  o horario.
 * @param disciplina variavel que armazena  a disciplina.
 * @param local variavel que armazena  o local.
 * @param sala variavel que armazena  a sala.
 * @throws IOException  se algum valor passado é invalido.
 */
    public static void gravarHorario(String dia, String horario, String disciplina, String local, String sala) throws IOException {
        String linha; // string que armazena todas as outras
        linha = (dia + ";" + horario + ";" + disciplina + ";" + local + ";" + sala); // string armazena tds e adiciona um token
        criarTxt(linha); // chama o metodo exemplo da classe txt

    }
    
    /** este metodo armazena a linha criada no txt
     *
     * @param valorGravado string a ser gravada no txt
     * @throws IOException 
     */
    public static void criarTxt(String valorGravado) throws IOException {

        FileInputStream abrirArquivo = new FileInputStream("src/classes/auxiliar.txt");
        InputStreamReader streamReader = new InputStreamReader(abrirArquivo);
        BufferedReader leitor = new BufferedReader(streamReader);

        FileWriter arquivo1 = new FileWriter("src/classes/dados.txt"); //cria um txt na pasta do projeto
        PrintWriter gravar = new PrintWriter(arquivo1); // cria um objeto para gravar no txt

        String line = null;
        while ((line = leitor.readLine()) != null) {
            gravar.println(line);
        }
        gravar.println(valorGravado); // grava o parametro passado na classe
        
        arquivo1.close();// fecha o arquivo
        gravar.close();
        abrirArquivo.close();
        streamReader.close();
        leitor.close();
        copiaArquivo("src/classes/dados.txt", "src/classes/auxiliar.txt");

    }

    /** metodo que cria copia tudo do arquivo auxiliar para o arquivo dados
     *
     * @param arquivo arquivo a sero cpiado
     * @param copia arquivo copiado
     * @throws IOException exceção 
     */
    public static void copiaArquivo(String arquivo, String copia) throws IOException {
        File inputFile = new File(arquivo);
        File outputFile = new File(copia);

        FileReader in = new FileReader(inputFile);
        FileWriter out = new FileWriter(outputFile);
        int c;

        while ((c = in.read()) != -1) {
            out.write(c);
        }

        in.close();
        out.close();
    }

}